package fr.musique.bean;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity
@Table(name = "T_PLAYLIST")
public class Playlist implements Serializable {

	private static final long serialVersionUID = -2407268795320288790L;

	private int id;

	private String nom;

	private List<Musique> musiques;

	/**
	 * @return the id
	 */
	@Id
	@GeneratedValue
	@Column(name = "PLAYLIST_ID")
	public int getId() {
		return id;
	}

	/**
	 * @param id
	 *            the id to set
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * @return the nom
	 */
	@Column
	public String getNom() {
		return nom;
	}

	/**
	 * @param nom
	 *            the nom to set
	 */
	public void setNom(String nom) {
		this.nom = nom;
	}

	/**
	 * @return the musiques
	 */
	// Jointure entre la table playlist et musique afin de pouvoir renvoyer la
	// liste des musiques appartenant à la playlist
	@ManyToMany(cascade = CascadeType.ALL)
	@JoinTable(name = "PLAYLIST_MUSIQUE", joinColumns = { @JoinColumn(name = "PLAYLIST_ID") }, inverseJoinColumns = { @JoinColumn(name = "MUSIQUE_ID") })
	public List<Musique> getMusiques() {
		return musiques;
	}

	/**
	 * @param musiques
	 *            the musiques to set
	 */
	public void setMusiques(List<Musique> musiques) {
		this.musiques = musiques;
	}
}
